Git
Git查看所有的配置以及它们所在的文件
git config --list --show-origin获取git仓库
在已存在目录中初始化仓库
cd /c/user/my_project
git init
git add .
git commit -m 'initial project version'克隆现有的仓库
git clone https://github.com/libgit2/libgit2 #自定义本地仓库的名字,你可以通过额外的参数指定新的目录名记录每次更新到仓库
git status 命令查看哪些文件处于什么状态
git add 开始跟踪一个文件
忽略文件
我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件的模式
.gitignore 的格式规范如下:
[*]所有空行或者以 # 开头的行都会被 Git 忽略。
[*]可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
[*]匹配模式可以以(/)开头防止递归。
[*]匹配模式可以以(/)结尾指定目录。
[*]要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
# 忽略所有的 .a 文件
*.a
# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO
# 忽略任何目录下名为 build 的文件夹
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdfGitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表, 你可以在 https://github.com/github/gitignore 找到它
查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff
提交更新
git commit
git commit -m "Story 182: Fix benchmarks for speed" #在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行
git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤移除文件
git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中
查看提交历史
git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面
中一个比较有用的选项是 -p 或 --patch ,它会显示每次提交所引入的差异(按 补丁 的格式输出)。 你也可以限制显示的日志条目数量,例如使用 -2 选项来只显示最近的两次提交
撤消操作
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令来重新提交:
$ git commit --amend例如,你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend最终你只会有一个提交——第二次提交将代替第一次提交的结果。
git reset HEAD ... 来取消暂存
git checkout --是一个危险的命令。 你对那个文件在本地的任何修改都会消失——Git 会用最近提交的版本覆盖掉它
远程仓库的使用
查看远程仓库
查看你已经配置的远程仓库服务器,可以运行 git remote 命令
会列出你指定的每一个远程服务器的简写。 如果你已经克隆了自己的仓库,那么至少应该能看到 origin ——这是 Git 给你克隆的仓库服务器的默认名字
指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
运行 git remote add 添加一个新的远程 Git 仓库,同时指定一个方便使用的简写
从远程仓库中抓取与拉取
git fetch <remote>推送到远程仓库
git push origin master查看某个远程仓库
git remote show
$ git remote show origin
* remote origin
Fetch URL: https://github.com/schacon/ticgit
PushURL: https://github.com/schacon/ticgit
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date远程仓库的重命名与移除
你可以运行 git remote rename 来修改一个远程仓库的简写名。 例如,想要将 pb 重命名为 paul,可以用 git remote rename 这样做:
$ git remote rename pb paul
$ git remote
origin
paul分支简介
分支创建
创建一个 testing 分支, 你需要使用 git branch 命令:
git branch testinggit log` 命令查看各个分支当前所指的对象。 提供这一功能的参数是 `--decorate切换到新创建的 testing 分支去:
git checkout testing删除分支 带 -d 选项的 git branch 命令来删除分支:
git branch -d hotfix
Deleted branch hotfix (3a0874c).遇到冲突时的分支合并
git merge iss53Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。 出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:
<<<<<<< HEAD:index.html
contact : email.support@github.com
=======
please contact us at support@github.com
>>>>>>> iss53:index.html这表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分(======= 的上半部分),而 iss53 分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一个,或者你也可以自行合并这些内容。
远程分支
可以运行 git merge origin/serverfix 将这些工作合并到当前所在的分支。 如果想要在自己的 serverfix 分支上工作,可以将其建立在远程跟踪分支之上:
$ git checkout -b serverfix origin/serverfix
Branch serverfix set up to track remote branch serverfix from origin.
Switched to a new branch 'serverfix'这会给你一个用于工作的本地分支,并且起点位于 origin/serverfix。
如果想要查看设置的所有跟踪分支,可以使用 git branch 的 -vv 选项。 这会将所有的本地分支列出来并且包含更多的信息,如每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有。
$ git branch -vv
iss53 7e424c3 forgot the brackets
master 1ae2a45 deploying index fix
* serverfix f8674d9 this should do it
testing 5ea463a trying something new删除远程分支
假设你已经通过远程分支做完所有的工作了——也就是说你和你的协作者已经完成了一个特性, 并且将其合并到了远程仓库的 master 分支(或任何其他稳定代码分支)。 可以运行带有 --delete 选项的 git push 命令来删除一个远程分支。 如果想要从服务器上删除 serverfix 分支,运行下面的命令:
$ git push origin --delete serverfix
To https://github.com/schacon/simplegit
- serverfix变基
$ git checkout experiment
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: added staged command
$ git checkout master
$ git merge experiment
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]