Git教程
1、linux安装
sudo apt install git
2、输入git;如图成功安装
3、加入公钥到github
cat ~/.ssh/id_rsa.pub
二、git命令
git diff HEAD -- code.txt
HEAD表示在暂存区的文件, --表示当前工作区文件
1、git add file 添加文件到暂存区
git add -A . 添加所有改动的文件到暂存区
2、git rm file 在暂存区删除
恢复: git checkout HEAD -- file
4、 git commit -m 'first commit' 提交到版本库
5、git branch 查看分支
6、 git branch a 添加分支a
7、git checkout a 切换分支a
7.1、git branch -d name 删除分支
8、git checkout -b a 一步添加并切换到分支a
9、git checkout -d a 删除分支a
10、git checkout -D a 强制删除分支a
10.2 git checkout .. filename #撤销没有加入暂存区的文件,就是还没有git add ..
加入暂存区后,git reset HEAD file,进入工作区,然后再撤销,就是git checkout .. file
11、git remote add origin git_hub_url 添加远程,版本库命名为origin
12、git pull origin master 可以先pull 然后再进行push,否则有可能会有冲突
13、git push origin master 把本地的文件上传到github服务器; origin是远程仓库名,master是本地的分支名,有可能是分支dev
14、git tag v1.1 添加版本
15、git checkout v1.1 切换
16、git init 初始化git项目目录
17、git log 查看日志
18、git merge 合并分支
19、git rebase 合并分支
20、ssh ssh-keygen -t rsa
21、git clone 下载github文件
22、git remote 查看远程项目库
23、git remote -v
24、git config —global user.name "" git config —global user.email ""
25、git status 查看状态
26、git config --global alias.co checkout
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%
d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
27、git config --global core.editor "vim"
28、git config --global color.ui true
29、git config --global core.quotepath false # 设置显示中文文件名
30、git config -l
31、git diff
32、git push origin :develop git checkout develop origin/develop git checkout -b develop origin/develop
33、git reflog git log git log -- pretty=oneline 查看所有的commit_id
34、git reset --hard HEAD^ git reset --hard HEAD~100 回退
35、git reset --hard commit_id
36、git stash 保存现场,可以去修改bug了
37、git stash list 查看保存的工作现场
38、git stash pop 恢复现场
39、本地分支跟踪github分支 git branch --set-upstream-to=origin/dev dev 远程dev与本地dev分支
三、分支冲突以及gitHub使用
1、两个分支都编辑了同一个文件,而且都进行了提交commit,那么合并的时候就会出现冲突
可以手动修改这个文件,然后重新提交,和合并
2、前面的merge都是快速合并,有可能不是快速合并,没有冲突但是会有一次提交过程
会出现很奇怪的图形,然后输入一个内容,输入的就是commit的说明信息,因为自动有一次提交工程。
git merge --no-ff -m ''提交信息' dev
这个是禁用快速合并模式,-m '' 提交信息
3、修改bug的过程
(1)正在其它的分支工作时,首先保存现场 git stash
(2)进入有bug的分支 git checkout branch_name
(3)新建并进入一个bug分支 git checkout -b bug_001
(4)修改完成后,进入有bug的那个分支,然后合并修改的结果,是由--no-ff 非快速合并 git merge --no-ff -m '提交信息' bug_001
(5)修改并保存了bug后,删除bug_001分支,git branch -d bug_001
(6)进入之前工作的那个分支,查看保存的现场,git stash list
(7)恢复现场 git stash pop
4、远程出现错误
先git pull 把远程的合并到本地来
这个错误是本地和远程有冲突了
git pull origin master --allow-unrelated-histories
出现很奇怪的图形,ctrl+C或者ctrl+z啥的
然后再进行push
git push origin master
git pull origin master --allow-unrelated-histories 出现了错误
解决方法:
(1)git fetch --all
(2)git reset --hard origin/master
然后再 git pull origin master --allow-unrelated-histories
2.1 问题所在:fetch是将主分支上的所有的代码都down下来,但不会自动合并。
2.2 解决方案:
① 保存本地代码
② 执行git fetch --all
③ 执行git reset --hard origin/master ----> git reset 把HEAD指向刚刚下载的最新的版本
④pull主分支下的代码
⑤解决冲突,然后提交代码到自己的分支那里
2、我们如果先把远程复制到本地,就不需要init;而且直接push,pull