0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GIT

Last updated at Posted at 2015-08-20

Tài liệu tham khảo

■Cơ chế hoạt động
https://git-scm.com/book/vi/v1/Ph%C3%A2n-Nh%C3%A1nh-Trong-Git-Nh%C3%A1nh-L%C3%A0-G%C3%AC%3F

http://backlogtool.com/git-guide/vn/
http://git.mikeward.org/

■GUI tool:
http://git-scm.com/downloads/guis

■Tool học qua simulator
https://try.github.io/levels/1/challenges/1
http://pcottle.github.io/learnGitBranching/

Git Internals: Working directly with Git Objects

git hist
git cat-file -p
git cat-file -p
git cat-file -p // lấy 6 số đầu trong dãy hash của blob

Git Internals: The .git directory

ls -C .git
cat .git/config
cat .git/HEAD

lab 1:Kiểm Tra Cấu Hình

$ git config --list
user.name=Scott Chacon
user.email=schacon@gmail.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto

lab 2: Cấu hình

Config user, email

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
$ git config user.name
Scott Chacon

Trình Soạn Thảo

$ git config --global merge.tool vimdiff

lab 3: Tạo dự án

mkdir sonnh
cd sonnh
git add hello.txt
git commit -m "First Commit"

lab 4: Kiểm tra trạng thái

git status

lab 5:Tạo thay đổi

echo abc > a.txt
echo xyz >> a.txt // thêm line vào cuối file

lab 6: Xem thay đổi vùng index (Staging Changes)

git add a.txt
git status

lab 7:Staging and Committing

git add b.txt
git commit -m "Changes for a and b"
git add c.txt
git commit - m "unretlated to c"
git status

lab 8:Committing Changes

git commit  -a -m "commit message"
//-a all
//-m message

Using Vim for add message

Amending Commits

Để ko chia thành quá nhiều lần commit thì chúng ta sử dụng lệnh này
giúp cho log sáng sủa

git add hello.txt
git commit --amend -m "Add the same ticket-number fix"
git commit --amend -m "Nội dung message mới" // chỉ thay đổi message

lab9: HELP

$ git help <verb>
$ git <verb> --help
$ man git-<verb>

Ví dụ:

$ git help config

lab 10: LOG

git log --pretty=oneline --max-count=2
git log --pretty=oneline --since='5 minutes ago'
git log --pretty=oneline --until='5 minutes ago'
git log --pretty=oneline --author=<your name>
git log --pretty=oneline --all
git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short

lab 11:Aliases

Mở file .gitconfig

[alias]
  co = checkout
  ci = commit
  st = status
  br = branch
  hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
  type = cat-file -t
  dump = cat-file -p 

lab12: Tạo TAG

git tag v1
git checkout v1

lab 13: Removing Commits from a Branch by Tag

git reset --hard tagName

--hard param: Phản ánh tới cả working directory, thay đổi cả những phần chưa commit
--soft: giữ phần chưa commit

lab 14:Delete tag

Remove the oops tag

git tab -d tagName

lab 15: Xem thay doi

GitDiffSimple.png

lab 16:Undoing Local Changes (before staging)

Xóa bỏ các file chưa được add

git clean --force 
// option -d giúp clean các thư mục
//-n option giúp show xem thay đổi

$ git clean -df
$ git checkout -- 

//or chỉ định name  
$ git checkout abc file

lab 17: Phục hồi ở STAGE (before committing)

git reset HEAD badfile.txt
	

lab 18: Phục hồi khi đã lỡ COMMITED (chưa push)

$ git revert HEAD --no-edit
$ git reset --soft HEAD~1 // Bỏ 1 commit và giữ lại thay đổi hiện tại
$ git reset HEAD~1 --hard //bỏ 1 commit cả phần đã commit và cả phần đang thay đổi hiện tại
$ git reset --hard origin/branch //để reset lại local cho khớp với trên remote.
$ git reset --hard <hash>//hoặc chỉ định đến bản hash tường minh

lab 19: Phục hồi khi đã PUSH

$ git revert HEAD~1..HEAD

gitPhuchoi.png

lab 20:Moving Files

mkdir lib
git mv hello.rb lib
git status

// or

mkdir lib
mv hello.rb lib
git add lib/hello.rb
git rm hello.rb
git commit -m "moving file"

lab20: Creating a Branch

git branch newBranch
git checkout -b greet

-b: create branch

List branch:

git branch -a
git branch -l
git branche -r

lab 21:switch Branches

git checkout greet
git checkout master

lab 22:Merging

merge development into master

git checkout master
git merge development

lab 23 Resolving Conflicts

Sau khi giải quyết conflict cần gọi lệnh sau để commit thay đổi

git add
git commit 

lab 25 Show remote information

git remote
git remote show origin
git branch -r

Show all remote we have

git remote -v

Change name

git remote rename <old-name> <new-name>

origin -> enomemory

git remote add john http://dev.example.com/john.git
git clone URL

lab 26 FETCH

Lay ve origin/master

git checkout master
git fetch

Merge to local master
git merge origin/master

lab 27 PULL

Lấy và merge về Working tree

git pull

Bản chất tương đương:

git fetch
git merge origin/master

lab 28 :TRACKING

git branch --track localbranchA origin/branchA
git branch -a
git hist --max-count=2

CHÚ Ý TRACKING nhầm thì lúc push sẽ bị nhầm
cần dùng lệnh

git branch -vv //để show lại
//sau đó dùng lệnh thay đổi upstream để sửa
git branch -u DectBranch

lab 29: PUSH

$ git push origin --delete serverfix

PullFetchPush.png

lab 30:Bare Repositories

Không tạo ra vùng working index

cd ..
git clone --bare hello hello.git
ls hello.git

lab 31: STASH

Đây là một dạng bộ nhớ tạm dùng để lưu các thay đổi đang làm mà chưa commit, sau đó phục hồi code về nguyên trạng ban đầu trước khi có những thay đổi đó.

git stash
git stash list

Để phục hồi stash mới nhất vừa lưu nhưng không xoá nó:

git stash apply

Phục hồi và xóa khỏi stack stash

git stash pop

Để phục hồi một stash bất kì:

git stash apply stash@{1} (với stash@{1} là tên của stash đó)

Để huỷ bỏ một stash, dùng lệnh:

git stash drop stash@{1} (với `stash@{1} là tên stash cần xoá)

Xem chi tiết một stash:

git stash show -p stash@{0}

lab 32 tạo PATCH file

Patch là một hình thức đóng gói các thay đổi thành 1 file, sau đó gửi đến cho người cần nhận những thay đổi đó.

Ví dụ bạn cần viết một đoạn script để thay đổi một số thứ trong dự án và muốn gửi những thay đổi này cho một người khác mà không muốn commit lên repository (vì có thể đây chưa phải là những thay đổi chính xác, cần thử nghiệm trước,…), giải pháp là tạo ra file patch, và người nhận file chỉ việc apply file patch này vào mà không cần phải thực hiện thao tác pull code.

Để tạo một file patch từ những thay đổi hiện tại trong dự án:

git diff > tên-file.patch

Nếu những thay đổi của bạn có kèm theo các dữ liệu binary (hình ảnh, blah blah,… không phải text như code), thì phải thêm vào tham số full-index và binary như sau (với SVN hoặc TFS thì chả cần):

git diff --full-index --binary > tên-file.patch

Ở phía người nhận, nếu muốn apply các thay đổi này vào dự án thì dùng lệnh sau:

git apply tên-file.patch

Lab 33 Xem những commit chưa được push

Trong khi làm việc, có thể bạn tạo ra rất nhiều commit (tất nhiên là chưa push), nhưng lại không nhớ rõ là mình đã commit những gì, vào lúc nào, thì có thể dùng lệnh sau để liệt kê các commit đó:

git log origin/master..master

SQUASH

Nhóm 1 số commit lại thành 1 rồi merge

git merge --squash --edit
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?