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 [mylibgit] #自定义本地仓库的名字,你可以通过额外的参数指定新的目录名
复制代码 记录每次更新到仓库
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/**/*.pdf
复制代码 GitHub 有一个十分详细的针对数十种项目及语言的 .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 -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 remote show - $ git remote show origin
- * remote origin
- Fetch URL: https://github.com/schacon/ticgit
- Push URL: 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 log` 命令查看各个分支当前所指的对象。 提供这一功能的参数是 `--decorate
复制代码 切换到新创建的 testing 分支去:删除分支 带 -d 选项的 git branch 命令来删除分支:- git branch -d hotfix
- Deleted branch hotfix (3a0874c).
复制代码 遇到冲突时的分支合并
Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。 出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:- <<<<<<< 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 [origin/iss53: ahead 2] forgot the brackets
- master 1ae2a45 [origin/master] deploying index fix
- * serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] 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
- - [deleted] 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
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |