1, 切换分支:linux
git checkout 《分支名字》: git checkout clhandlegit
2,查看有哪些分支:github
git branch ;服务器
查看远端有哪些分支:ssh
git branch -rfetch
3,拉取远端分支:(本地没有该分支的时候???)this
git fetch origin cl_handle: clhandle; url
注意: fetch 将远端拉到本地 可是 不合并;spa
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 ,取消了add git 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;