1.如果没有最新代码,希望从头开始做
[root@localhost opt]# git clone git@192.168.137.40:/git-root/shell.git
[root@localhost opt]# cd shell/
[root@localhost shell]# echo '222' > 2.sh
[root@localhost shell]# git add 2.sh
[root@localhost shell]# git commit -m 'note:add a shell'
[master 5adbf9a] note:add a shell
1 file changed, 1 insertion(+)
create mode 100644 2.sh
[root@localhost shell]# git push -u origin master
Authorized users only. All activities may be monitored and reported.
git@192.168.137.40's password:
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 265 bytes | 265.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To 192.168.137.40:/git-root/shell.git
002af51..5adbf9a master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
2.如果有一个新版代码,希望直接把本地代码替换到远程服务器
[root@localhost ~]# cd /opt/shell/
[root@localhost shell]# echo 333 > 3.sh
[root@localhost shell]# git init
Reinitialized existing Git repository in /opt/shell/.git/
[root@localhost shell]# git add .
[root@localhost shell]# git commit -m 'note'
[master a5a158b] note
1 file changed, 1 insertion(+)
create mode 100644 3.sh
[root@localhost shell]# git push -u origin master
Authorized users only. All activities may be monitored and reported.
git@192.168.137.40's password:
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 282 bytes | 282.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To 192.168.137.40:/git-root/shell.git
5adbf9a..a5a158b master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
git clone过来的时候,git不会对比本地和服务器的文件,也就不会有冲突,建议确定完全覆盖本地的时候用clone,不确认会不会冲突的时候用git pull,将远程服务器的代码download下来
3.git常用命令
1.git init #初始化
2.git add main.sh #将某文件添加到暂存区
3.git add. #将文件夹下所有的文件添加到暂存区
4.git commit -m 'note' #将暂存区中的文件保存成某个版本
5.git log #查看所有的版本日志
6.git status #查看现在暂存区的状态
7.git diff #查看现在文件与上一个提交的commit版本的区别
8.git reset --hard HEAD^ #回到上一个版本
9.git reset --haed xxxx #回到xxxx版本
10.git pull origin master #从主分支pull到本地
11.git push -u origin master #从本地push到主分支
12.git pull/push #执行默认是主分支
4.版本穿梭、回退
#用git log查看
#每一个提交的版本都唯一对应一个commit版本号
#使用git reset命令退到上一个版本
[root@localhost shell]# git reflog(查看命令历史,以便确认要回到哪个版本,注意commit版本号可以不用全部填写,输入前7位即可)
5adbf9a (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
a5a158b (origin/master, origin/HEAD) HEAD@{1}: clone: from git@192.168.137.40:/git-root/shell.git
[root@localhost shell]# git reset --hard 5adbf9a
HEAD is now at 5adbf9a note:add a shell
5.分支管理
1.创建分支
[root@localhost shell]# git checkout -b dev #创建dev分支并切换到dev
Switched to a new branch 'dev'
####git checkout命令加上-b参数表示创建并切换,相当于git branch dev + git checkout dev
[root@localhost shell]# git branch #命令会列出所有分支,当前分支前面会有*号
* dev
master
2.分支切换
[root@localhost shell]# git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
[root@localhost shell]# git branch
dev
* master
3.合并分支
首先切换到dev分支,并随意创建一个文件
[root@localhost shell]# git checkout dev
Switched to branch 'dev'
[root@localhost shell]# ll
total 8.0K
-rw-r--r-- 1 root root 33 Apr 20 18:16 1.sh
-rw-r--r-- 1 root root 4 Apr 20 18:16 2.sh
[root@localhost shell]# echo '444' >4.sh
[root@localhost shell]# ll
total 12K
-rw-r--r-- 1 root root 33 Apr 20 18:16 1.sh
-rw-r--r-- 1 root root 4 Apr 20 18:16 2.sh
-rw-r--r-- 1 root root 4 Apr 20 22:29 4.sh
合并
[root@localhost shell]# git merge dev #把dev分支的工作成果合并到master分支上
Already up to date.
#注意:git merge如果不指定分支,则默认将当前分支合并到master
切换回master,如下可看到dev分支提交的4.sh已合并到了master上
[root@localhost shell]# git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
[root@localhost shell]# ll
total 16K
-rw-r--r-- 1 root root 33 Apr 20 18:16 1.sh
-rw-r--r-- 1 root root 4 Apr 20 18:16 2.sh
-rw-r--r-- 1 root root 4 Apr 20 22:31 3.sh
-rw-r--r-- 1 root root 4 Apr 20 22:29 4.sh
4.删除分支
[root@localhost shell]# git branch -d dev
Deleted branch dev (was 5adbf9a).
[root@localhost shell]# git branch
* master