git使用
一、参考网址
1、《Pro Git》(git使用推荐)
2. 揭开GIT的面纱--git原理(了解内部原理推荐)
3、Git介绍(有常用命令图)
5、Github标星34K+Star,这款开源项目助你秒建Git服务!(Gogs)
6、给已经存在的项目添加git(把本地工程添加到远程仓库中)
11. 如何撤销 Git 操作?(阮一峰)
14. git 撤销,放弃本地修改
15. git 本地分支追踪远程分支
16. git 中怎样查看未传送(git push)到远程代码库的(git commit)提交?
17. git 误删分支恢复方法
18. Git 开发必备 .gitignore 详解!【建议收藏】
20. gitlab推送钉钉机器人配置
22. Git 拉取远程分支
23. git切换到指定远程分支
24.解决报错:fatal: in unpopulated submodule * (两个git工程合并到一个工程遇到的问题)
25. git submodule add子模块的添加,--recurse-submodules递归克隆子项目(注意:克隆时一定要带此参数,否则会丢失子模块的文件)
30. Git Checkout——如何从另一个分支获取文件
二、git使用步骤
1.基本配置(账号密码.....)
git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL"
git config --global core.editor vim
git config --global core.quotepath false (git status 显示中文和解决中文乱码)
git config --global core.pager 'less -x1,5' (设置Tab显示为4个字符的宽度)
git config --global http.sslVerify false (取消SSL认证)
git config --global credential.helper store (Gitlab https拉取代码缓存用户密码配置)
git config --global alias.unstage 'reset HEAD --' (取消暂存别名)
git config --global alias.last 'log -1 HEAD' (查看最后一次提交别名)
加--global,会在用户家目录的.gitconfig文件中生成下面的配置。如果没有--global,则在当前项目下的.git/config文件中添加。
2.克隆代码
git clone http://192.168.22.xxx:3000/xxx/aaa.git
以上会在当前目录建立aaa目录,并获取服务端代码到aaa目录中,也可以手动创建aaa目录
使用如下命令进行克隆:
mkdir aaa
cd aaa
git clone http://192.168.22.91:3000/xxx/aaa.git .
2.1 本地创建仓库,并与远程仓库关联方法
2.1.1 参考网址:
1. Git 远程仓库(w3cschool)
2. 修改git远程仓库路径
3. 主要命令:
1)Git查看远程仓库名称
git remote -v
2)git 更换 url
git remote set-url origin <new url>
3)添加远程关联
git remote add origin <url>
4)删除远程关联
git remote remove <url>
2.1.2 实践
echo "# w3cschool.cn" >> README.md git init git add README.md git commit -m "first commit" git remote add origin https://github.com.WongJay/w3cschool.cn.git git push -u origin master
3.查看修改变动
git status
4.添加改动到暂存区
git add [FILES]
其中FILES为文件列表(空格分隔),也可以是目录名,如果是目录名,则会递归添加目录下所有文件
5.查看状态并提交
git status
git commit
会自动使用设置的编辑器打开,比如vim,在里面天上提价日志,格式参考Angular格式:
https://www.cnblogs.com/louyifei0824/p/10135450.html
6.推送到远程服务器
git push origin master
以上推送到远程服务器的master分支(主分支),如果要推送到其它分支,使用其它分支名即可
git push <远程主机名> <本地分支名>:<远程分支名>
推送一个本地新分支到远程,本设置跟踪分支:
git push -u origin feat/cjb/xxx 这样本地分支feat/cjb/xxx跟踪了远端分支feat/cjb/xxx
7. 查看所有分支
git branch -a (包含远程分支)
git branch -v (查看每一个分支的最后一次提交)
git branch -vv (所有的本地分支列出来并且包含更多的信息, 如每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有)
8. 创建分支
git branch testing
以上创建了testing分支
设置跟踪远程分支:
git branch --set-upstream-to=origin/<branch> develop
设置本地分支develop跟踪origin/<branch>远程分支
9.切换分支
git checkout testing
以上切换到testing分支去
10.创建并切换分支
git checkout -b testing
以上创建testing分支并切换到该分支去
11.分支合并
git checkout master
git merge testing
以上切换到master分支,将testing分支和master分支进行合并
12. 删除分支
git branch -d testing
以上删除testing分支
13. 忽略文件
我们可以在项目目录下创建一个名为 .gitignore
的文件,列出要忽略的文件模式。 来看一个实际的例子:
$ cat .gitignore *.[oa] *~
14. 查看远程仓库
$ git remote -v origin https://github.com/schacon/ticgit (fetch) origin https://github.com/schacon/ticgit (push)
指定选项 -v
,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
15. 查看未暂存的和已暂存的修改
1)git diff (未暂存)
2)git diff --staged (已暂存), git diff --cached
查看已经暂存起来的变化:(--staged 和 --cached 是同义词)
16. 拉取
git fetch + git merge与 git pull的区别:
建议使用git fetch + git merge 代替git pull
如: git fetch origin develop
git merge remotes/origin/develop
由于 git pull
的魔法经常令人困惑所以通常单独显式地使用 fetch
与 merge
命令会更好一些
格式: git pull <远程主机名> <远程分支名>:<本地分支名>
17. 查看提交历史
git log
git log -p -2 (选项 -p
,用来显示每次提交的内容差异。 你也可以加上 -2
来仅显示最近两次提交)
git log --oneline --decorate (查看各个分支当前所指的对象),如:
$ git log --oneline --decorate f30ab (HEAD, master, testing) add feature #32 - ability to add new 34ac2 fixed bug #1328 - stack overflow under certain conditions 98ca9 initial commit of my project
正如你所见,当前 “master” 和 “testing” 分支均指向校验和以 f30ab
开头的提交对象
git log -10 --name-status
-(n)显示最近的10次提交
--name-status 显示新增、修改、删除的文件清单
18. 撤销操作
git commit --amend (
--amend
选项的提交命令尝试重新提交)
$ git commit -m 'initial commit' $ git add forgotten_file $ git commit --amend
最终你只会有一个提交 - 第二次提交将代替第一次提交的结果
19. 取消暂存的文件
git reset HEAD <file>...
来取消暂存
或 git rm --cached -r .
20. 撤消对文件的修改
git checkout -- [file]
你需要知道 git checkout -- [file]
是一个危险的命令,这很重要。 你对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它。
21. 查看已暂存和未暂存的修改
1) 查看未暂存的修改
git diff
2)查看已暂存的修改
git diff --staged (查看已暂存的将要添加到下次提交里的内容,可以用
git diff --cached
命令。(Git 1.6.1 及更高版本还允许使用 git diff --staged
,效果是相同的,但更好记些。))
22. 打标签
1)附注标签:
git checkout master
git tag -a v1.2.0 -m 'Add to support web'
git show v1.2.0
git push origin v1.2.0
23.修改远程服务器URL
git remote set-url origin https://192.168.22.91:5000/xxx-app/xxx700.git
-
删除远程分支
git push orgin --delete feature/cjb/sd
-
删除本地有但在远程库中已经不存在的分支
git remote prune origin
使用命令:git remote show origin ,会提示用上面的命令删除过时的远程分支
24. 把其他分支的修改合并到当前分支的命令
在当前分支的目录下使用git cherry-pick命令
25. 远程仓库的重命名
如果想要重命名引用的名字可以运行 git remote rename
去修改一个远程仓库的简写名。 例如,想要将 pb
重命名为 paul
,可以用 git remote rename
这样做:
$ git remote rename pb paul
$ git remote
origin
paul
值得注意的是这同样也会修改你的远程分支名字。 那些过去引用 pb/master
的现在会引用 paul/master
26. 远程仓库的移除
如果因为一些原因想要移除一个远程仓库 - 你已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了 - 可以使用 git remote rm
:
$ git remote rm paul $ git remote origin
27. 撤销提交(回滚)
git revert原理: 在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险。
git revert
命令只能抵消上一个提交,如果想抵消多个提交,必须在命令行依次指定这些提交。比如,抵消前两个提交,要像下面这样写。
$ git revert [倒数第一个提交] [倒数第二个提交]
28. 暂存修改,用于切换分支
git stash命令
29. git fetch命令
当本地不存在的分支,想要从远程拉取过来,可以使用git fetch命令(用git pull命令会执行合并操作,导致冲突),示例:
//会从远程拉取feat/cjb/lcuRefactor分支,并且在本地创建分支feat/cjb/lcuRefactor git fetch origin feat/cjb/lcuRefactor:feat/cjb/lcuRefactor
30. 误删除分支处理
不小心把远程仓库的分支和本地分支都删除了,如果处理:
在本地还有个缓存,其分支前面加了remotes/origin, 如:
然后通过命令:git checkout -b feat/cjb/xxx remotes/origin/feat/cjb/xxx,则可以恢复本地分支
分支删除顺序:先删除本地(如何分支没有合并,会有警告提示),然后删除远程仓库中的分支;否则,在删除本地分支时,会一直提示没有合并
三、练习
1、在github上新建资源库,然后把本地项目提交到新库的步骤:
在本地项目目录下操作(远程库名test.git):
1)echo “# test” >> README.md //在本次创建README.md文件
2)git init //在本地创建git库
3)git add README.md //把README.md保存到git
4) git remote add origin https://github.com/xxxx/test.git //创建远程库,名字叫origin
5) git push -u origin master //本地库名master,推送到远程库,-u把本地库与远程库关联起来
2、配置验证信息
1)使用以下命令生成ssh-key:
ssh-keygen -t rsa -C "youremail@example.com"
2) 在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key(注意:拷贝的文件后缀有.pub,表示公钥)
3)在github上,进入 Account Settings(账户配置),左边选择SSH Keys,Add SSH Key,title随便填(如company, home),粘贴在你电脑上生成的key
4) 验证是否成功
$ ssh -T git@github.com
Hi WongJay! You've successfully authenticated, but GitHub does not provide shell access.
四、 git插件
1. gitui