git常用命令

------------------------------------------------------------命名本地提交者名称-----------------------------------

 git config --global user.name "name"       加了--global参数就是当前机器所有库都使用这个名字

注意,上面不设定名字的话,那么远程协助就不知道是谁提交的了
------------------------------------------------------------------------------------------

把当前目录变成仓库
git init
1.查看文件修改了什么内容
git diff 文件名
如:git diff readme.txt

1-1.查看工作区和版本库里面最新版本的区别
git diff HEAD -- 文件名 (注意文件名和前面--有空格)
如:git diff HEAD  - - readme.txt


2.让我们时刻掌握仓库当前的状态,看什么文件被修改了
git status命令

看什么文件被改了,接着看文件具体修改了什么内容分别用1~2命令

3.把当前这个目录变成Git可以管理的仓库
git init命令

4.把文件添加到仓库轨道(实际上就是把文件修改添加到暂存区)
git add 文件名
git add . 后面加一个.意思是所有改动的文件都添加到暂存区

5.把文件提交到仓库里
git commit -m "备注"

先要把要保存的文件放入仓库轨道,然后再提交到仓库里,使用4~5命令
--------------------------------------------------------------------------add 和 commit 合到一步提交的方法 git commit -am '提交备注'(注意这个命令 如果新增文件就不要用这个新创建的文件会commit不上去,要用add 和 commit命令 )
6.查看版本记录,回到过去
git log
git log --pretty=oneline (精简化只显示 id+备注)  
后记: 使用命令查看日志后,按q 即可退出

7.查看文件
$ cat 文件名
如:$ cat readme.txt

8.回滚版本
git reset --hard commit_id

还有git revert (这种会保留前面的版本,把回退的版本再提交一个版本) 
https://blog.csdn.net/yxlshk/article/details/79944535

9.要重返未来,查看命令历史 每次commit的命令记录
git reflog

10.文件在工作区的修改全部撤销
(回到最近一次git commit(最新的版本)或git add(和暂缓区那的信息一致)时的状态)
git checkout -- 文件名  
git checkout 文件名 (后面试了下 deary说百分之90是不需要加--,我试了下没加成功了,加了反而不行)  #撤销单个文件用这个命令
git clean -f  #撤销在工作区没有add的全部文件  #亲测 文件 可以用这个命令,但是文件夹的用这个命令不行,要手动区删除文件夹
如:git checkout readme.txt

11.可以把暂存区的修改撤销掉
git reset HEAD file
如:git reset HEAD readme.txt   
假如工作区里面有修改,暂缓区有暂缓文件,撤销暂缓区的文件,暂缓区清空,工作区还是原来的修改文件
后记: 使用上面的命令无法把暂存区的文件撤销回工作区
使用了 git rm --cached * 或着 git rm --cached 文件名 可以

 



当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步9~10

12.删除文件
rm 文件名 (在工作区删除该文件)
如:rm test.txt
git rm 文件名 (在工作区删除该文件,并且提交到暂缓区)
如:git rm test.txt
----------------------------------------------远程仓操作-------------------------------------------------------------------------------------------------------------------------
13.在本地的仓库下运行下面命令,关联远程仓库 (这个是先建了本地仓库,再建远程仓库的,这里一般会提示要你继续关联mastr,见后记)
git remote add origin git@github.com:用户名/远程库名.git
如:git remote add origin git@github.com:michaelliao/learngit.git
14.本地仓库资料提交远程仓库
git push -u origin master  (首次提交远程仓库加-u 同步分支,第一次使用会询问验证 输入yes)
如:git push -u origin master

 本地仓库版本回滚后,版本低于远程仓,使用下面命令强行更新远程仓:

 git push -f origin master 

 注释: origin 远程仓库名, master 分支名,-f 为force,意为:强行、强制。

有时上面命令不管用 要把 origin 换成远程仓库的名字 ,如:  git push -u git@github.com:Lucky-Syw/lucky_test.git  master



15.克隆远程仓库到本地仓库 (这个是先建远程仓库,再克隆到本地仓库。 注意这个只需要cd 到你要的文件夹下,执行下面的命令 就直接创建了关联了远程仓的 本地仓了!! )   
git clone git@github.com:用户名/远程库名.git
如: git clone git@github.com:michaelliao/gitskills.git

16.克隆别人的仓库,再自己的仓库里使用 git clone git@github.com:用户名/远程库名.git 就可以把别人仓库的资料克隆下来了  (比如以前产品的需求说明放在他自己的github仓库上,我们去下载的情况)

17.同步远程仓库信息到本地关联的仓库里   使用了13关联了远程库,使用17同步远程库资料下来
git pull origin master

18.试了下面这个比较正常 (自己想的,估计是错的)
下面这个操作才是正规的:
18-1:先查看远程仓库有没有变化
git fetch origin
18-2:master分支有变化的话,先使用命令同步下来
git merge origin/master

再提交自己要提交的文件
git push origin master

假如回滚了版本再使用强行push上去

19.上海悠悠的(下次试试这个)
git add * 
git commit -m '更新说明'
若果是多人同时开发代码得先git pull  #问了Dreamy 其实pull是自动合并 即执行了 上面18-1 和 18-2 的命令
git pull
命令用于从另一个存储库或本地分支获取并集成(整合)
最后一步是push到远程的master分支上
git push origin master 
出现问题解决方法:




出现下面的提示

git config --global user.name "Your Name"

git config --global user.email you@example.com

 

那就按提示输入命令:

 git config --global user.name "你的名字"

git config --global user.email 你的邮箱

 

 

后记:

本地仓库关联了远程仓库,本地仓库删除文件 要使用 git rm 命令去删 删完再commit提交。

手动删除的 add 是无法把删除文件加入待提交区提交的。

 

 

后记:

当本地仓库首次关联了 远程仓库,提交信息到远程仓库时,会报错

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> master

 

那么要使用命令 关联 远程仓的master

git branch --set-upstream-to=origin/本地分支  远程端分支 后 git pull 拉取远程仓

如果远程仓拉取的东西 和本地仓有冲突 会提示

Automatic merge failed; fix conflicts and then commit the result.

那么就打开本地仓具体的文件,进行解决冲突,然后git add 和 git commit 然后再git pull 同步回远程仓库 即可

 

例子:

git branch --set-upstream-to=origin/master master

 

 

 

 

 

 

----------------------------------分支操作-------------------------------------------------------------------------------------------------------------------------

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name> (这个方法的话 查log的时候是将分支的提交log合并到主线,不知道哪一步是分支和主线合并的步骤)

合并某分支到当前分支:git merge --no-ff -m "merge with no-ff" 分支名称

如:git merge --no-ff -m "merge with no-ff" dev(这个方法合并分支的话,会主线和分合并这里打一个log,那么我们看log的时候就知道这里是做过合并的地方)

删除分支:git branch -d <name> 分支没有合并的话要用-D

(注意:删除分支后,要找回这个分支,记得要先创建一个分支,在这个分支在找回原来分支的记录。如果在主线找回分支记录的话,主线信息会被分支替换掉)

(假如工作区和暂缓区有工作资料存在,切换支线 这些文件会跟着走,展示在切换的支线上,所以每次切换线之前都要确定当前线没有待办事项)

 

推送本地分支到远程库: git push origin branch(分支名称)

拉取远程分支到本地分支: git pull origin  branch(分支名称)

 

使用时记录备注:

分支不要去删除主线上的文件,要合并后再删除主线上要删的文件

拉了分支后,不要动主线上的文件,不然主线提交了版本,分支合并不了

 

16.查看分支合并图形
git log --graph --pretty=oneline --abbrev-commit
git log --oneline --decorate --graph (这句效果一样,也可以看提交记录 和tag记录)
git log --decorate



----------------------------------------------------------打版本标签 tag---------------------------------------
这里要搞明白,一个标签 只能对应一个commit ,一个commit 能对应多个tag
打版本标签,会把最后一次commit的地方加上版本号 v1.0
git tag -a v1.0 
#-a 是给这个标签备注的意思,首次一般要-a 给标签加备注,再次使用这个标签的时候就可以不用-a
另外一种写法: git tag -a v0.1.2 -m “0.1.2版本” 会把最后一次commit的地方加上版本号v0.1.2,并对这个标签添加备注“0.1.2版本”

查看所有标签
git tag

删除某个标签
git -d v1.0
后记:有时上面那个命令执行不成功就使用 
git tag -d v1.0

如果我们忘了给某个提交打标签,又将它发布了,我们可以给它追加标签的方法
git tag -a v0.9 85fc7e7   (85fc7e7是某次commit的编号,需要打那个就填哪个 v0.9是要打的标签) #这个试了貌似木有ok
git tag -a 0.9 -m "备注" 85fc7e7(85fc7e7是某次commit的编号,需要打那个就填哪个 v0.9是要打的标签 -m 是对标签的备注) #这个试了ok
可以看到说明文字 git show <tagname>
查看标签   git tag
参考:http://www.runoob.com/git/git-tag.html
 
-------------------------------------------------------------------------------------多人协作-----------------------------------------------------------------------
是把对方的 id_rsa.pub公钥 配置到远程仓库里,再通过克隆,同步远程库等方法达到协作
 
 教程参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000    
        http://www.testclass.net/git/git-github-start/
        http://www.runoob.com/git/git-remote-repo.html
看得是前2个
  虫师的python-selenium教程有个git多人协助的说明有空要去看

后记:
自己摸索了下一个流程
先拉取github上的主线 到各自关联的本地库,
然后在各自本地库创建自己的分支,进行工作(注意不要删除主线的文件)
工作完后,把分支和主线合并一起,使用命令 git fetch origin 查看远程库主线有没有变化
有变化就先 git pull origin master 同步到本地 
然后再 git push origin master 把本地信息推送到远程库

发现上面的流程不对
应该先拉一条master
然后切一条自己分支开发
查看master是否有变化,有变化拉最新的下来
把master合并到自己的分支
推自己的分支上远程仓
经理 远程仓操作合并动作
后记:
git add . 和 git add * 区别
git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤,但是git add * 会忽略.gitignore把任何文件都加入 
 

 

 

这个挺不错的 (有空多阅读)

https://blog.csdn.net/xb565517830/article/details/80742073

 

 

过滤文件不上传远程仓库

要忽略的文件需要先 git add 和git commit一下然后执行下面命令

 

忽略

$ git update-index --assume-unchanged /path/to/file

取消忽略

$ git update-index --no-assume-unchanged /path/to/file

 

 

忽略的文件多了,想找出所有被忽略的文件,暂时找到下面的办法,

git ls-files -v | grep '^h\ '

提取文件路径,方法如下

git ls-files -v | grep '^h\ ' | awk '{print $2}'

所有被忽略的文件,取消忽略的方法,如下

git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged 


-----------------------------------
©著作权归作者所有:来自51CTO博客作者西瓜霜啊的原创作品,请联系作者获取转载授权,否则将追究法律责任
git 忽略上传指定文件 命令
https://blog.51cto.com/u_15668841/5347395

 

查看log的树状态

git l

 

 

拉取远程分支到本地

git branch -a #查看远程分支
git checkout -b 本地分支名 origin/远程分支名  #关联远程分支到本地

 

 

切换分支不带修改代码过去  git stash,和切换回来开发分支出现要修改的代码 stash pop

git stash
git stash pop

 

posted @ 2018-01-26 00:03  凯宾斯基  阅读(495)  评论(4编辑  收藏  举报