0%

git 使用总结

git 使用总结

git 用户配置

先设置好用户名和邮箱,这些信息会在 commit 记录中出现.之后再添加其他配置,方便使用.详细命令如下:

1
2
3
4
5
git config --global user.name "lichen404"     #填写用户名
git config --global user.email "f360family@gmail.com" #填写用户邮箱
git config --global push.default simple
git config --global core.quotepath false #避免中文乱码
git config --global core.editor "vim" #使用vim编辑提交信息

配置 github

生成 SSH key 并把它添加到 Github

  1. 进入 https://github.com/settings/keys
  2. 点击 New SSH key,你需要输入 Title 和 Key,但是你现在没有 key,往下看
  3. 打开 Git Bash
  4. 复制并运行 rm -rf ~/.ssh/*把现有的 ssh key 都删掉.
  5. 运行 ssh-keygen -t rsa -b 4096 -C "f360family@gmail.com".
  6. 按回车三次,运行cat ~/.ssh/id_rsa.pub,得到一串东西,完整的复制这串东西.
  7. 回到上面第 2 步的页面.
  8. 在 Key 里粘贴刚刚你你复制的那串东西.
  9. 点击 Add SSH key
  10. 回到 Git Bash
  11. 运行ssh -T git@github.com

git 的一些概念

  • 工作区:就是你在电脑里能看到的目录.
  • 版本库: 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库.

git add 就是把文件添加进版本库,实际上是把文件修改添加到暂存区;

0-300x153

而git commit 实际上就是把暂存区的所有内容提交到当前分支.

1-300x152

常用 git 操作

命令 说明
git init 初始化当前目录为 git 仓库
git status 查看显示当前仓库文件状态,-s (summary) -b (branch),-sb 就是显示当前所有文件的状态
git add 将文件添加到「暂存区」,表示要加到仓库里,git add .意思是把当前目录(.表示当前目录)里面的变动都加到「暂存区」
git commit -m “message” 将你 add 过的内容提交到仓库里,并添加注释信息,方便日后查阅. - v verbose 显示更多信息
git merge 合并分支 Ex: git merge test
git switch(git checkout) 切换分支
git branch 创建分支 Ex:git branch x 参数 - D 删除分支
git log 查看版本提交历史
git rm 从版本库和工作区中删除该文件,作用和git add 相反。当只是需要从版本控制中移除本地还需要使用时可以使用 git rm --cached file_path
git reset --hard 版本号 版本回退,注意这个操作会使没有 commit 过的变动消失
git reflog 查看所有版本提交历史,包含已经“删除”的版本
git diff 用于比较当前文件和暂存区文件的差异,暂存区文件就是你add过的文件
git restore git restore 用来取代 git checkout 来实现撤销对工作区文件的修改,让文件回到最近一次git commit 或 git add 时的状态 Ex:git restore readme.txt.git restore --staged取代了 git reset HEAD ,可以把暂存区的修改撤销掉,重新放回工作区 Ex:git restore readme.txt –staged

git fetch 和 git pull

git fetch 是将远程主机的最新内容拉到本地但并不进行 merge,用户可以自行决定是否 merge。在取回更新后,会返回一个 FETCH_HEAD,指的是某个 branch 在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:

1
git log -p FETCH_HEAD

可以通过这些信息来判断是否产生冲突,已确定是否将更新 merge 到当前分支。

git pull 是将远程主机的最新内容拉到本地并直接合并,即 git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

git rebase

git rebase 可以把本地未 push 的分叉提交历史整理成直线

使用 Github

  • 关联远程仓库: Ex: git remote add origin git@github.com:lichen404/jirengu.git origin 为远程仓库的名称,可以修改,但通常使用这个

  • 提交代码: Ex: git push origin master //提交本地 master 分支到远程仓库master分支 git push origin master:test //提交本地 master 分支到远程仓库的test分支 参数 -f 为强制提交,会覆盖远程仓库的版本 参数 -u 记住上次push的分支,下次避免重新输入,直接git push即可

  • 抓取远程仓库代码: Ex: git pull origin master

  • 克隆仓库: Ex:git clone git@github.com:lichen404/blog-test.git test 克隆到 test 文件夹,为空则文件夹名称与 repo 名称相同

Github 文件说明

  • .gitingore 标识哪些文件应该被 git 忽略,注意 .gitignore 只能修改那些没有被 track 的文件,如果某些文件已经被纳入版本管理中,则修改.gitignore 是无效的
  • README.md 代码说明
  • License 代码开源协议

解决冲突

fix-conflict-300x192

当两条分支各自都有新的提交时,Git 无法执行”快速合并”(git merge),只能试图把各自的修改合并起来,但这种合并就可能会有冲突. 当 Git 无法自动合并分支时,就必须首先解决冲突.解决冲突后,再提交,合并完成. 解决冲突就是把 Git 合并失败的文件手动编辑为我们希望的内容,再提交.

git stash

注意:工作区和暂存区是公共的.未 add 的内容不属于任何一个分支, 未 commit 的内容也不属于任何一个分支.当执行命令 git checkout develop 切换到 develop 分支时,如果之前的分支对文件有修改,也会将修改的文件信息带到 develop 分支上来. git stash 可以将你的修改临时储存起来,保证你的工作区是干净的,避免切换分支时你的修改被带到其他分支. git stash list //查看被临时储存的修改

如何恢复:

1
2
3
git stash pop //恢复后,stash内容并不删除,你需要用git stash drop来删除
git stash apply //恢复的同时把stash内容也删了
git stash apply stash@{0} //恢复指定的stash

####cherry-pick cherry-pick 命令让我们能复制一个特定的 commit 到当前分支

1
2
3
4
5
6
$ git branch
* dev
master
$ git cherry-pick 4c805e2
[master 1d4b803] fix bug 101
1 file changed, 1 insertion(+), 1 deletion(-)

配置别名

可以将 git 命令缩写,减少工作量

1
2
3
4
5
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD' //撤销add
$ git config --global alias.last 'log -1' //显示最近一次提交

配置文件

配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用. 每个仓库的Git配置文件都放在.git/config文件中. 当前用户的 Git 配置文件放在用户主目录下的一个隐藏文件.gitconfig 配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置.

更多内容

廖雪峰的 Git 教程

你们仍未掌握那天所学的 git 知识