博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git 使用经验
阅读量:6841 次
发布时间:2019-06-26

本文共 3259 字,大约阅读时间需要 10 分钟。

hot3.png

1, 切换分支:

git  checkout  《分支名字》: git checkout clhandle

 

2,查看有哪些分支:

git  branch ;

查看远端有哪些分支:

git branch -r

 

3,拉取远端分支:(本地没有该分支的时候???)

git fetch origin cl_handle: clhandle;  

注意: fetch  将远端拉到本地 但是 不合并;

origin 表示远端, 

cl_handle 是远端的分支名

clhandle 如果本地没有这个分支 就会创建;

 

---------------------------------

git pull origin cl_handl  将远端的 cl_handle 分支 拉取到本地并合并;(本地的当前分支)

 

 

 

4, 撤消 修改(当内容还没有提交的时候  有效)

例如 git status 列出 以下文件被修改;

那么 : git  checkout 《文件名》 即可;

还支持通配符;

 

 

5,add:

1) git status:  to list all file status ;

2)git add *.cpp  to add all cpp file listed;

 

 

6,commit : for first established git , should after first commit, there would be a master branch can be seen;

git commit -m "this is a first commit"  //[提交的是暂存区里面的内容,也就是 Changes to be committed 中的文件 ]

git commit -a 除了将暂存区里的文件提交外,还提交 Changes but not updated 中的文件。

 

 

7,添加远程主机

 git remote add origin git@192.168.1.106:/home/XXXXX.git

中间这个orgin 就是 添加的远程 主机名; 正如前面用到的;//[此时还不用输入密码]

 

8,push:

 git push origin master:master :  远程主机名 +  本地分支名: 远程分支名(如果不存在该分支 则创建)

 

 

 

9,恢复:

git reset -soft :取消了commit  git reset -mixed(默认) :取消了commit ,取消了addgit reset -hard :取消了commit ,取消了add,取消源文件修改

我使用了 git  reset 文件名 来回复之前错误的add 操作;

 

当代码被删除  并且被提交了; 但是并没有被更新到远端;

我使用了 git reset HEAD <file name > 来撤消当前的add 操作;

 然后使用了 git checkout <file name > 这样被删除的代码就回来了;

 

10:关于远端设置

git remote -v:显示当前所有远程库的详细信息,显示格式为 远程库名字 url连接(类型)

2)修改已经保存的远端地址:

git remote rm origin 

git remote add origin git@github.com:Liutos/foobar.git

或者尝试 使用

 

11, git fetch origin

自从mac 上在远程仓库上创建了新的分支,在unbuntu 上怎么也找不到;(git branch -r ); 原因:git没有中心服务器, 所有的命令都在本地执行; Origin 是远端名称;

这样会将远端的分支信息 同步到本地 , 这样就可以拉去远程其他分支了;

 

12: 新建一个本地分支

git branch <新分支名字>

 

13,git 查看 某一个 文件的 修改记录

git log -p filename

 

14: git 停止跟踪 文件

git rm --cached readme.txt  参数: --cached: 不删除 本地文件

git rm -n readme.txt  查看某文件是否被跟踪

 

15: 代码合并:当远端代码 有更新  , 同时本地代码也有更新; 有冲突的时候 直接push  和 push 都不行了;

1)先 fetch :  例如 git fetch clpc master  : 拉取 远端 clpc 的master的分支提交信息[ 不知道是否必要,但是我执行了这一步]

2)再merge: 例如:git merge clpc/master: 将远端的更新直接 合并到当前的分支;

 

16: 强行推送到远程分支:错误代码 被提交到了远端, 本地代码 回滚后,就需要强行把 本地代码提交到远端 分支;

否则 git pull 后 错误代码又回来了;

方法: git push -f origin;

 

 

17:  重远端拉取 并在本地建立一个新的分支

git checout -b [new branch name ] origin/[origin branch name]

 

18:

git diff 当前工作目录和上次提交与本地索引间的差异。 git diff master..develop 比较master和develop这两个分支版本差异 git diff master...develop 比较master和develop这两个分支 分支间的差异 git diff --stat 查看哪些文件被修改,其实用git status也可以看到 git diff HEAD  上面这条命令会显示你工作目录与上次提交时之间的所有差别   git diff     ORIG_HEAD 比较内容和上次提交时的差异 git diff master^..master~2  ^表示上一次 ~2表示上上次. 依此类推.比较上次和上上次文件提交的差异 git diff --cached 比如缓冲区 以上命令都可以加上目录名.这样就只比较某个目录了

 

git diff branch1 branch2 --name-only :只显示差异的文件

 

疑问:

1) 为什么在使用git pull 拉取最新代码后, 但是 却没有发现 代码修改,查看 文件 log 时候  发现了 更新日志;

原因: 本地文件在合并前  有修改,并且已经提交, 因此没有merge  进来;

解决办法:

需要手动merge 远程分支 到本地; 然后提交merge 以后 才能使用;

git merge clpc/master master

 

 

19, 标签; 将标签推送到远端:

git push remoteName tagName : 将指定标签推送到远端。

或者:

git push remoteName --tags  将本地标签全部推送到远端。

 

查看本地有哪些标签:

git  

 

 

20:  删除本地新增的 未跟踪文件(untracked files)

git clean -fd

-f : 只删除文件

-d 新增的文件夹。

 

21, 公司git 服务器需要用ssh 验证才能访问问题: for linux

cd ~/.ssh

create a new file config  with content as below:

-----

Host XXXX

    IdentityFile XXXX

------

erro: bad owner or permission  in accessiong config

solution: chmod 600 config

erro: permissions XXX for XXXX are to open .

solu: chmod 600 XXXX 

fixed;

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/592116/blog/405280

你可能感兴趣的文章