git-常用命令
1、git init:初始化一个Git仓库;
2、git clone:从远程仓库克隆代码到本地;
直接使用网址
git clone <url>
or
用a代替网址
git remote add a <url>
git clone a
3、git add:添加文件到暂存区;
文件名
git add <filename>
or
添加所有文件
git add *
4、git commit:将暂存区的文件提交到本地仓库;
git commit -m 'comment'
or
自动调出默认编辑器
git commit
or
不用add
git commit -a -m 'comment'
5、git push:将本地仓库的代码推送到远程仓库;
git push <remote> <branch>
won’t record that the local branch ‘master’ needs to be pushed to upstream (origin) ‘master’ (upstream branch)
6、git pull:从远程仓库拉取最新代码;
7、git branch:列出所有本地分支;
8、git checkout:切换分支或恢复工作树文件;
git checkout <tag or branch or ca82a6d>
9、git merge:合并指定分支到当前分支;
10、git status:显示工作树的状态;
11、git log:显示提交日志;
–graph option to see what divergent histories look like.
–decorate option to easily visualize where our branch
pointers are located
–all option 显示所有commit
git log --oneline --decorate --graph --all
12、git diff:显示工作树与暂存区或本地仓库之间的差异;
特定commit,特定文件,使用difftool比较
$git difftool HEAD:src/main/java/com.xyz.test/MyApp.java HEAD^:src/main/java/com.xyz.test/MyApp.java
13、git stash:将当前工作区的变更储存到一个临时区域;
14、git tag:添加、列出或删除标签;
15、git remote:管理远程仓库;
16、git fetch:从远程仓库拉取最新代码,但不自动合并到本地仓库;
Part 2 其他指令
1.用默认的软件打开文件
start <filename>
explorer <filename>
————————————————
1. 常用文件和目录操作
cd / 进入根目录
cd ~ 进入用户目录user
cd .. 返回上级目录
cd ../.. 返回二级
cd ./xxx 进入当前目录下的xx目录
ls 查看目录中的文件
ls -a 查看目录中的文件,包含隐藏文件
ls -al 查看目录下所有文件及基本信息
rm -f .gitignore 删除文件.gitignore
rmdir dir1 删除目录dir1
rm -rf dir1 删除目录dir1并且删除其中的所有文件
mkdir dir1 创建目录dir1
touch xx.xx 新建文件xx.xx
2. git配置
git config --global user.name "xxname"
git config --global user.email "xxemail@xx.com"
查看配置
git config --global user.name
git config --global user.email
3. 解决gitbash乱码问题
git config --global core.quotepath false
在安装目录下etc/bash.bashrc文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
4. git常用命令
仓库初始化
git init
文件添加到暂存区
git add .
文件提交到本地仓库
git commit -m "my comment"
git文件状态查看
git status
git日志查看
git log --pretty=oneline --all --graph --abbrev-commit
版本回退
git reset --hard commitID
查看已经删除的log
git reflog
添加文件至忽略列表,新建.gitignore文件,向其中添加要忽略的文件或者目录
touch .gitignore
5. 分支
查看分支
git branch
创建分支
git branch 分支名
切换分支
git checkout 分支名
创建并切换分支
git checkout -b 分支名
合并分支,比如合并到master,先切换到master,然后执行
git merge 分支名
删除分支,强制删除
git branch -d 分支名
git branch -D 分支名
解决合并冲突
先手动解决冲突,修改冲突文件,然后 git add .保存,然后git commit提交
6. 远程仓库
生成SSH公钥
ssh-keygen -t rsa
查看公钥
cat ~/.ssh/id_rsa.pub
将公钥添加至远程账户,然后验证公钥是否设置成功
ssh -T git@gitee.com
连接远程仓库
git remote add origin 远程仓库SSH链接
查看远程仓库
git remote
推送到远端的同时并且建立起和远端分支的联系,本地master对应远端分支origin
git push --set-upstream origin master
查看本地分支和远端分支的联系
git branch -vv
建立分支联系之后可以直接push
git push
获取远端更新
git fetch
拉取远端更新(获取并且合并)
git pull
远端和本地都修改了同一个文件的同一个位置,直接拉取会有冲突,需要先获取更新,即fetch,然后本地解决冲突合并再提交
7. git rebase用法
7.1 合并提交记录
//初始版本V1.0
version = 1.0
a = 1;
b = 2;
c = a + b;
//修改版本V1.1
version = 1.1
a = 2;
b = 2;
c = a + b;
//修改版本V1.2
version = 1.2
a = 2;
b = 3;
c = a + b;
此时我们查看修改记录是这样的,有三次提价记录,那么如果我们想合并这三次提交记录怎么办呢
* 2eafeaf (HEAD -> master) v1.3 b = 3
* 1fd0943 v1.1 a = 2
* 80c625c v1.0 a = 1 b = 2 c = a+ b
使用git rebase
使用命令
git rebase -i HEAD~4
注意这里使用HEAD~4弹出来的包括我们的三次修改以及前一次的修改
pick f003170 add aa bb cc
s 80c625c v1.0 a = 1 b = 2 c = a+ b
s 1fd0943 v1.1 a = 2
s 2eafeaf v1.3 b = 3
从上到下的顺序中,第一个一定要是pick,如果第一条是s,会看到s是红色的,rebase会失败。所以合并的实质是把新添加的提交记录合并到就得记录上,如果想把三条合成一条,那么使用git rebase -i HEAD~4,将后三个改成s压缩既可以了,修改第一个提交记录生成新的记录
7.2 合并分支
master分支
version = 1.3
a = 2;
b = 3;
c = a + b;
新建分支newfeature,修改到如下内容并且提交
version = 1.4
a = 2;
b = 3;
c = 0;
c = a + b;
切回到master继续开发,并且提交
version = 1.5
a = 2;
b = 3;
c = a + b;
c++;
这时候切换到newfeature分支,newfeature分支想拥有master分支的更改,那怎么办呢
这时候就可以使用git rebase master
rebase之后的结果
version = 1.5
a = 2;
b = 3;
c = 0;
c = a + b;
c++;
————————————————
1、git clone
1-1、定义
git clone用于拷贝远程仓库到本地,复制下来是整个版本库,在文件夹目录下生成.git文件夹,所以不需要用命令git init 初始化;
1-2、命令
git clone <url> //url为要拷贝的远程库地址
有下面两种协议复制远程库:
通过HTTPS协议复制远程库:
git clone https://github.com/buggetout/git_clone_test.git
通过SSH协议复制远程库:
git clone git@github.com:buggetout/git_clone_test.git
2、git pull
2-1、定义
git pull命令用于从远端获取代码并合并到本地的版本。
git pull 是git fetch 和 git merge 的操作
2-2、命令
git pull <远程仓库名> <远程分支名> : <本地分支名>
1
比如说远程仓库origin 的分支master分支拉取过来,与本地的leaf01分支合并:
git pull origin master : leaf01
如果是远程分支与本地的当前分支合并,则冒号后面的指定分支语句(包括冒号)可以省略,如下:
git pull origin master
要是上面拉取远程仓库指定分支origin/master 下来合并的操作用命令git petch合并的操作
3、git fetch
3-1、定义
git fetch命令用于从远程获取代码库。
3-2、命令
git fetch <远程代码库名>//将指定远程库的更新全部取回本地
git fetch <远程代码库名> <远程分支名> //可以指定拉取远程哪个分支
-------
git merge <远程代码库名>/<远程分支名> //要是用git fetch拉取远程代码更新之后,git log FETCH_HEAD之后判断没有冲突后,用这个命令合并到本地分支上了
在用命令git fetch拉取远程库代码之后,会返回一个FETCH_HEAD,反馈某个分支在服务器的最新状态,可以在本地取回更新的状态:
git log -p FETCH_HEAD
根据信息来判读是否有产生冲突,是否merge到当前分支;
git merge <远程代码库名>/<远程分支名>
4、git pull和git fetch的区别
4-1、远端跟踪的不同
1、git pull:
git pull无法直接对远端跟踪分支操作,必须先切回本地分支,然后创建一个新的commit提交;
2、git fetch:
git fetch 能够直接更改跟踪分支;
4-2、拉取不同
1、git pull:从远程获取最新版本并自动merge到本地,会自动合并和修改;
2、git fetch:将数据拉取到本地仓库,不会自动哼和修改;
4-3、commit不同
1、git pull:使用git pull更新代码,本地库中的master的commit ID会发送改变,变成了2。
2、git fetch:使用git fetch更新代码,本地库中的master的commit ID不变,还是等于1。
————————————————
命令行指令
1、git init:初始化一个Git仓库;
2、git clone:从远程仓库克隆代码到本地;
直接使用网址
git clone <url>
or
用a代替网址
git remote add a <url>
git clone a
3、git add:添加文件到暂存区;
文件名
git add <filename>
or
添加所有文件
git add *
4、git commit:将暂存区的文件提交到本地仓库;
git commit -m 'comment'
or
自动调出默认编辑器
git commit
or
不用add
git commit -a -m 'comment'
5、git push:将本地仓库的代码推送到远程仓库;
git push <remote> <branch>
won’t record that the local branch ‘master’ needs to be pushed to upstream (origin) ‘master’ (upstream branch)
6、git pull:从远程仓库拉取最新代码;
7、git branch:列出所有本地分支;
8、git checkout:切换分支或恢复工作树文件;
git checkout <tag or branch or ca82a6d>
9、git merge:合并指定分支到当前分支;
10、git status:显示工作树的状态;
11、git log:显示提交日志;
–graph option to see what divergent histories look like.
–decorate option to easily visualize where our branch
pointers are located
–all option 显示所有commit
git log --oneline --decorate --graph --all
12、git diff:显示工作树与暂存区或本地仓库之间的差异;
特定commit,特定文件,使用difftool比较
$git difftool HEAD:src/main/java/com.xyz.test/MyApp.java HEAD^:src/main/java/com.xyz.test/MyApp.java
13、git stash:将当前工作区的变更储存到一个临时区域;
14、git tag:添加、列出或删除标签;
15、git remote:管理远程仓库;
16、git fetch:从远程仓库拉取最新代码,但不自动合并到本地仓库;
————————————————
git bash here
cd 文件夹
git add .
git commit -m "Initial commit"
git push -u origin master
Git 全局设置
git config --global user.name "hanwenda"
git config --global user.email "hanease@126.com"
创建新版本库
git clone http://11.53.85.57/mobile/Cpecc20AppClient.git
cd Cpecc20AppClient
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
已存在的文件夹
cd existing_folder
git init
git remote add origin http://11.53.85.57/mobile/Cpecc20AppClient.git
git add .
git commit -m "Initial commit"
git push -u origin master
已存在的 Git 版本库
cd existing_repo
git remote rename origin old-origin
git remote add origin http://11.53.85.57/mobile/Cpecc20AppClient.git
git push -u origin --all
git push -u origin --tags